package com.cq.hd.member.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cq.hd.member.api.dto.ConfigSettingQueryDto;
import com.cq.hd.member.api.dto.ConfigSettingUpdateDto;
import com.cq.hd.member.api.vo.ConfigSettingVo;
import com.cq.hd.member.po.TbConfigSettingPo;
import springfox.documentation.service.ApiListing;

import java.util.List;

/**
 * <p>
 * 配置设置表 服务类
 * </p>
 */
public interface TbConfigSettingService extends IService<TbConfigSettingPo> {

    String getUserConfigValue(Long userId, String configKey);

    String getUserConfigValueOfDefault(Long userId, String configKey);

    /**
     * 根据配置键获取配置
     *
     * @param configKey 配置键
     * @return 配置信息
     */
    TbConfigSettingPo getByConfigKey(Long userId, String configKey);
    
    /**
     * 更新或保存配置
     *
     * @param configSetting 配置信息
     * @return 是否成功
     */
    boolean saveOrUpdateConfig(TbConfigSettingPo configSetting);
    
    /**
     * 根据配置类型获取配置值
     *
     * @param configType 配置类型
     * @return 配置值
     */
    String getConfigValueByType(String configType);

    /**
     * 获取用户配置，如果用户没有配置则返回默认配置
     * 
     * @return 配置列表
     */
    List<ConfigSettingVo> getUserConfigOrDefault(ConfigSettingQueryDto configSettingQueryDto);

    void setConfigValue(ConfigSettingUpdateDto configSettingUpdateDto);

    }